package com.yidu.drug.action;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.google.gson.Gson;
import com.yidu.drug.common.Message;
import com.yidu.drug.model.MaterialTypeModel;
import com.yidu.drug.model.MaterialsModel;
import com.yidu.drug.service.MaterialTypeService;
import com.yidu.drug.service.MaterialsService;

/**
 * 材料的action
 * @author 王志伟
 * @date 2018年8月9日 下午2:10:14
 * @version 1.0
 */
@Controller
@RequestMapping("materials")
public class MaterialsAction {
	//材料的service
	@Resource
	private MaterialsService materialsService;

	//材料类型的service
	@Resource
	private MaterialTypeService materialTypeService;
	
	//消息类
	Message m=new Message();
	/**
	 * 查询所有的方法
	 * @param limit 每页的行数
	 * @param page 开始的页数
	 * @param matName 材料名称
	 * @return Map集合
	 * @throws IOException 
	 */
	@RequestMapping("/findAll") 
	public void findAll(String limit,String page,String matName,HttpServletResponse response,String drugId,String typeId) throws IOException{
		//编码转换
		response.setCharacterEncoding("UTF-8");
		//Gson对象
		Gson gson = new Gson();
		//写入流
		PrintWriter out = response.getWriter();
		//定义Map集合接收查询的材料
		Map<String,Object> map = materialsService.findAll(limit,page,matName,drugId,typeId);
		//存入json
		String json = gson.toJson(map);
		//写出
		out.print(json);
		//关闭流
		out.close();
	}
	
	/**
	 * 查询类型所有
	 * @return 材料的List集合
	 */
	@RequestMapping("/findAllType")
	@ResponseBody
	public List<MaterialTypeModel> findType(){
		//定义材料的List集合接收查询的所有材料类型并返回
		List<MaterialTypeModel> list=materialTypeService.findAllType();
		return list;
	}
	
	/**
	 * 增加的方法
	 * @param record 材料对象
	 * @return 消息类
	 */
	@RequestMapping("/add")
	public Message insertSelective(MaterialsModel record){
		//得到增加的行数存入消息类并返回
		int count=materialsService.insertSelective(record);
		System.out.println(count+"增加的行数");
		m.setNum(count);
		return m;
	}
	
	/**
	 * 删除的方法
	 * @param matId 材料ID
	 * @return 消息类
	 */
	@RequestMapping("delete")
	@ResponseBody
	public Message deleteByMatId(String matId){
		//根据材料类型ID删除得到删除的行数存入消息类并返回
		int count=materialsService.deleteByPrimaryKey(matId);
		m.setNum(count);
		return m;
	}
	
	/**
	 * 根据ID查询
	 * @param matId 材料ID
	 * @return 材料对象
	 */
	@RequestMapping("findById")
	@ResponseBody
	public MaterialsModel findById(String matId){
		//根据材料类型ID查询得到对象返回
		MaterialsModel mat=materialsService.selectByPrimaryKey(matId);
		return mat;
	}
	
	/**
	 * 根据ID修改
	 * @param mat 材料对象
	 * @return 消息类
	 */
	@RequestMapping("update")
	public Message updateById(MaterialsModel mat){
		//接收修改信息存入消息类并返回
		int count=materialsService.updateByPrimaryKeySelective(mat);
		m.setNum(count);
		return m;
	}
}
